Generating a computer program may involve generating a set of domain rules that set out the requirements for the computer program for a domain. Known techniques for designing computer programs typically involve identifying requirements without identifying domain rules. The absence of identified domain rules, however, may result in inefficient and ineffective computer program generation for a domain. Consequently, known techniques for designing computer programs may be unsatisfactory in certain situations.